﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//biblioteki XML
using System.Xml;
using System.Xml.Linq;

namespace PizzaProjekt
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();

            zaladuj_comboBox1();

            ukryj_przyciski_edycji();
        }

        private void pokaz_przyciski_edycji()
        {
            button1.Hide();
            button2.Hide();
            button3.Hide();
            button4.Show();
            button5.Show();
        }

        private void ukryj_przyciski_edycji()
        {
            button1.Show();
            button2.Show();
            button3.Show();
            button4.Hide();
            button5.Hide();
        }

        private void zaladuj_comboBox1()
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load("pracownicy.xml");
            XmlNodeList pracownicy = xDoc.GetElementsByTagName("pracownik");
            for (int i = 0; i < pracownicy.Count; i++)
            {
                comboBox1.Items.Add(pracownicy[i].Attributes["Imie"].InnerText + " " + pracownicy[i].Attributes["Nazwisko"].InnerText);
            }
        }

        private void wyczysc_comboBox1()
        {
            comboBox1.Items.Clear();
        }

        private void czyszczenie_formularza()
        {
            textBox1.Text = "";
            textBox2.Text = "";
            richTextBox1.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //dodaj pracownika
            string imie, nazwisko, adres, pensja, stanowisko;
            int ID=1;
            //pobranie wartości
            imie = textBox1.Text;
            nazwisko = textBox2.Text;
            adres = richTextBox1.Text;
            pensja = textBox3.Text;
            stanowisko = textBox4.Text;
            //wczytanie XML
            XDocument doc = XDocument.Load("pracownicy.xml");
           
           var lista = from x in doc.Root.Elements()
                        select x;
            XElement pracownik = new XElement("pracownicy"
            );

            foreach (var pra in lista)
            {
                ID = int.Parse(pra.Attribute("ID").Value);
                var istniejacy_pracownicy = new XElement("pracownik",
                new XAttribute("ID", pra.Attribute("ID").Value),
                new XAttribute("Imie", pra.Attribute("Imie").Value),
                new XAttribute("Nazwisko", pra.Attribute("Nazwisko").Value),
                new XAttribute("Adres", pra.Attribute("Adres").Value),
                new XAttribute("Pensja", pra.Attribute("Pensja").Value),
                new XAttribute("Stanowisko", pra.Attribute("Stanowisko").Value)
                );
                pracownik.Add(istniejacy_pracownicy);
            }


            var nowy_pracownik = new XElement("pracownik",
                new XAttribute("ID", ++ID),
                new XAttribute("Imie", imie),
                new XAttribute("Nazwisko", nazwisko),
                new XAttribute("Adres", adres),
                new XAttribute("Pensja", pensja),
                new XAttribute("Stanowisko", stanowisko)
                );
                pracownik.Add(nowy_pracownik);
            //zapisanie XML
            XDocument doc_save = new XDocument(pracownik);
            doc_save.Save("pracownicy.xml");

            czyszczenie_formularza();

            MessageBox.Show("Pracownik został dodany poprawnie.", "Nowy Pracownik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            wyczysc_comboBox1();
            zaladuj_comboBox1();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //usuń pracownika
           string imie_nazwisko=comboBox1.Text;
           if (comboBox1.Text == "" || comboBox1.Text == "Wybierz Pracownika")
           {
               MessageBox.Show("Pracownik nie został wybrany do usunięcia", "Usunięcie Pracownika", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
           XDocument doc = XDocument.Load("pracownicy.xml");

           var lista = from x in doc.Root.Elements()
                       select x;
           XElement pracownik = new XElement("pracownicy"
           );

           foreach (var pra in lista)
           {
               string im_naz = pra.Attribute("Imie").Value +" "+pra.Attribute("Nazwisko").Value;
               if (String.Compare(im_naz, imie_nazwisko, true) == 0)
               {
                   MessageBox.Show("Pracownik "+im_naz+" został usunięty", "Usunięty Pracownik", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               } else 
               {
                   var istniejacy_pracownicy = new XElement("pracownik",
                   new XAttribute("ID", pra.Attribute("ID").Value),
                   new XAttribute("Imie", pra.Attribute("Imie").Value),
                   new XAttribute("Nazwisko", pra.Attribute("Nazwisko").Value),
                   new XAttribute("Adres", pra.Attribute("Adres").Value),
                   new XAttribute("Pensja", pra.Attribute("Pensja").Value),
                   new XAttribute("Stanowisko", pra.Attribute("Stanowisko").Value)
                   );
                   pracownik.Add(istniejacy_pracownicy);
               }
           }
           XDocument doc_save = new XDocument(pracownik);
           doc_save.Save("pracownicy.xml");
           wyczysc_comboBox1();
           zaladuj_comboBox1();

        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (comboBox1.Text == "Wybierz Pracownika" || comboBox1.Text == "")
            {
                MessageBox.Show("Wybierz pracownika z listy", "Ostrzeżenie", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                pokaz_przyciski_edycji();
                string imie_nazwisko = comboBox1.Text;
                XDocument doc = XDocument.Load("pracownicy.xml");

                var lista = from x in doc.Root.Elements()
                            select x;
                XElement pracownik = new XElement("pracownicy"
                );

                foreach (var pra in lista)
                {
                    string im_naz = pra.Attribute("Imie").Value + " " + pra.Attribute("Nazwisko").Value;
                    if (String.Compare(im_naz, imie_nazwisko, true) == 0)
                    {
                           string ID = pra.Attribute("ID").Value;
                           label6.Text = ID;
                           label6.Hide();
                           string imie = pra.Attribute("Imie").Value;
                           string nazwisko=pra.Attribute("Nazwisko").Value;
                           string adres=pra.Attribute("Adres").Value;
                           string pensja = pra.Attribute("Pensja").Value;
                           string stanowisko = pra.Attribute("Stanowisko").Value;
                           textBox1.Text = imie;
                           textBox2.Text = nazwisko;
                           textBox3.Text = pensja;
                           textBox4.Text = stanowisko;
                           richTextBox1.Text = adres;
                    }
                }

            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            ukryj_przyciski_edycji();
            czyszczenie_formularza();
            wyczysc_comboBox1();
            zaladuj_comboBox1();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            
            //edytuj pracownika
            string ID = label6.Text;
           
            XDocument doc = XDocument.Load("pracownicy.xml");

            var lista = from x in doc.Root.Elements()
                        select x;
            XElement pracownik = new XElement("pracownicy"
            );

            foreach (var pra in lista)
            {
                string ID_xml = pra.Attribute("ID").Value;
                if (String.Compare(ID_xml, ID, true) == 0)
                {
                    var edytowany_pracownik = new XElement("pracownik",
                    new XAttribute("ID", ID),
                    new XAttribute("Imie", textBox1.Text),
                    new XAttribute("Nazwisko", textBox2.Text),
                    new XAttribute("Adres", richTextBox1.Text),
                    new XAttribute("Pensja", textBox3.Text),
                    new XAttribute("Stanowisko",textBox4.Text)
                    );
                    pracownik.Add(edytowany_pracownik);
                }
                else
                {
                    var istniejacy_pracownicy = new XElement("pracownik",
                    new XAttribute("ID", pra.Attribute("ID").Value),
                    new XAttribute("Imie", pra.Attribute("Imie").Value),
                    new XAttribute("Nazwisko", pra.Attribute("Nazwisko").Value),
                    new XAttribute("Adres", pra.Attribute("Adres").Value),
                    new XAttribute("Pensja", pra.Attribute("Pensja").Value),
                    new XAttribute("Stanowisko", pra.Attribute("Stanowisko").Value)
                    );
                    pracownik.Add(istniejacy_pracownicy);
                }
            }
            XDocument doc_save = new XDocument(pracownik);
            doc_save.Save("pracownicy.xml");
            MessageBox.Show("Pracownik został edytowany poprawnie.", "Edycja Pracownika", MessageBoxButtons.OK, MessageBoxIcon.Information);
            ukryj_przyciski_edycji();
            comboBox1.Text = "Wybierz Pracownika";
            wyczysc_comboBox1();
            zaladuj_comboBox1();
            czyszczenie_formularza();
        }
    }
}
